import { useState } from 'react';
import { COUNT_TYPE } from '../components/Selector';

/**
 * @description 根据限制数量决定可选择的数量点击次数
 * @param defaultCount 从url地址拿到的默认值
 * @param limit 限制购买数量
 * @returns 一个数组包含count 和 setCurrentCount方法
 */
function useSelectorCount(
  defaultCount: number,
  limit: number
): [number, (type: COUNT_TYPE) => void] {
  //初始化一个响应式数量 默认值为传入的值
  const [count, setCount] = useState<number>(defaultCount);

  //封装一个新的setCount方法来修改项目中的count数量
  //根据点击事件传入的值(type)更改当前的数量
  const setCurrentCount = function (type: COUNT_TYPE) {
    setCount((count: number) => {
      switch (type) {
        //减1操作
        case COUNT_TYPE.MINUS:
          if (count <= 1) {
            //减至最小值为1时
            return count;
          }
          return count - 1;
        //加1操作
        case COUNT_TYPE.PLUS:
          //超出限制数量时
          if (count >= limit) {
            return count;
          }
          return count + 1;
        default:
          return count;
      }
    });
  };

  //返回
  return [count, setCurrentCount];
}

export default useSelectorCount;
